package chapter1.listSet.task.company2;
/*
1:公司有公司名称，注册地址，电话，经营范围等属性，公司有很多员工（用Set存储），员工有姓名，年龄，性别，职务，薪水、工号等属性，
公司有招聘员工（要求工号不能重复），有输出员工信息，以及辞退员工，和统计公司人数,获得公司薪水最高的员工的方法
用oop的思想模拟（用之前的while循环的那种方式),功能有新人入职，开除员工，输出员工信息等功能。
 */

import java.util.*;

public class Company {
    private String name;
    private String address;
    private String phoneNum;
    private String service;
    private Set<Staff> set = new HashSet<>();  
    private Iterator<Staff> iterator;  

    public Company(String name, String address, String phoneNum, String service) {
        this.name = name;
        this.address = address;
        this.phoneNum = phoneNum;
        this.service = service;
    }

    public void showCompany() {
        System.out.println("公司的名字:" + name + ",业务是:" + service);
        System.out.println("注册地址:" + address + ",联系电话:" + phoneNum + "\n");
        ;
    }

    //添加新员工
    public boolean addStaff(Staff newStaff) {
        return set.add(newStaff);
    }

    //查看员工信息
    public void showStaff() {
        if (set.isEmpty()) {
            System.out.println("公司没有员工");
            return;
        }
        System.out.println(name + "公司员工信息为:");
        iterator = set.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

    //辞退员工
    public void dismiss(String sN0) {
        if (set.isEmpty()) {
            System.out.println("公司没有员工，辞退失败");
            return;
        }
        iterator = set.iterator();
        while (iterator.hasNext()) {
            Staff staff = iterator.next();
            if (staff.getsNo().equals(sN0)) {
                set.remove(staff);
                System.out.println("辞退成功");
                return;
            }
        }
        System.out.println("未找到指定工号，辞退失败");
    }

    //统计公司员工人数
    public int getStaffNumber() {
        return set.size();
    }

    //查找薪水最高的员工
    public Staff findTopSalary() {
        if (set.isEmpty()) {
            return null;
        }
        return Collections.max(set);
    }


}
